#include <cstring>
#include <iostream>
#include <map>
#include <vector>

void test_uniform_init() {
  // 标准容器
  std::vector<int> v{1, 2, 3};
  std::map<int, std::string> m{{1, "one"}, {2, "two"}};
  // 数组
  auto arr1 = new int[3]{1, 2, 3};
  int arr2[3] = {1, 2, 3};
  // 内置类型
  int i{22};
  double d{3.14};
}

// 用户自定义类型
class Foo {
  int a_;
  double b_;

public:
  Foo() : a_{0}, b_{0.0} {}
  Foo(int a, double b = 0.0) : a_{a}, b_{b} {}
};

Foo f1{};
Foo f2{1, 2.0};

// 用户自定义 POD 类型
struct Bar {
  int a_;
  double b_;
};

Bar b{1, 2.0};

int main(int argc, char *argv[]) {
  std::cout << "==== ch01 p03 ====" << std::endl;
  test_uniform_init();
  return 0;
}
